Requirements for software applications inevitably evolve over time and are often customized for different users. For example, requirements may vary by region (e.g., different countries), such as different tax filing and reporting requirements. When software applications are hardcoded to comply with specific requirements, re-coding is inevitable as requirements change and/or new demands for customization arise. There is therefore a need for a flexible infrastructure upon which rapidly adaptable software applications may be developed and/or customized, with minimal expenditure of time and resources, where existing code is reused as much as possible.